HOME/Articles/

剑指Offer[8]——跳台阶

Article Outline

剑指Offer[8]——跳台阶

问题描述

一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。

考点

  • 循环和递归

思路

反过来思考,如果最后一步跳1级台阶,则只需考虑 n-1 级台阶有多少种跳法;如果最后一步跳2级台阶,则只需考虑 n-2 级台阶有多少种跳法。 二者相加即为所求。

代码

  • 递归,时间开销特别大

    class Solution {
    public:
    int jumpFloor(int number) {
      if (number == 1 || number == 0) return 1;
      return jumpFloor(number - 1) + jumpFloor(number - 2);
    }
    };
  • 斐波那契数列,方法同上题。

    class Solution {
    public:
      int jumpFloor(int number) {
          int x = 1, y = 2;
          while(--number){
              y = x + y;
              x = y - x;
          }
          return x;
      }
    };